lock 与 synchronized的区别
- lock 是一个接口,synchronized 是 Java 关键字;
- synchronized退出/发生异常时自动释放锁,lock需要手动执行unlock;
- synchronized不能处理线程中断Interrupt,lock可以处理;
- lock 功能更加丰富:可以通过非堵塞的trylock()获取锁,也可以tryLock(long time, TimeUnit unit)指定等待时间;
- lock 的实现比如读写锁可以提升读性能;
- Lock+Condition 可以实现多个等待队列区分不同条件。
https://zhuanlan.zhihu.com/p/99870419